using EOSDigital.SDK;
using System.Collections.Generic;

namespace EOSDigital.API
{
	public sealed class WhiteBalanceValues : ValueBase
	{
		private static List<CameraValue> values;

		public static CameraValue[] Values
		{
			get
			{
				return WhiteBalanceValues.values.ToArray();
			}
		}

		static WhiteBalanceValues()
		{
			WhiteBalanceValues.values = new List<CameraValue>
			{
				new CameraValue("Auto: Ambience priority", 0, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Daylight", 1, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Cloudy", 2, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Tungsten light", 3, 0.0, PropertyID.WhiteBalance),
				new CameraValue("White fluorescent light", 4, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Flash", 5, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom", 6, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Shade", 8, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Color temp.", 9, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom white balance: PC-1", 10, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom white balance: PC-2", 11, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom white balance: PC-3", 12, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom2", 15, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom3", 16, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Underwater", 17, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom4", 18, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom5", 19, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom white balance: PC-4", 20, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Custom white balance: PC-5", 21, 0.0, PropertyID.WhiteBalance),
				new CameraValue("Auto: White priority", 23, 0.0, PropertyID.WhiteBalance),
				new CameraValue("unknown", -1, 0.0, PropertyID.WhiteBalance)
			};
		}

		public static CameraValue GetValue(int value)
		{
			return ValueBase.GetValue(value, WhiteBalanceValues.values);
		}

		public static CameraValue GetValue(string value)
		{
			return ValueBase.GetValue(value, WhiteBalanceValues.values);
		}

		public static CameraValue GetValue(double value)
		{
			return ValueBase.GetValue(value, WhiteBalanceValues.values);
		}
	}
}
